package com.hong.util;

import com.hong.tomcat.TomcatServer;
import com.hong.tomcat.WebXml;
import org.dom4j.Element;

import java.io.File;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

/**
 * Created by John on 2019/1/26.
 * 项目加载工具
 */
public class WebLoaderUtil {

    public static Map<String, WebXml> resultMap = new HashMap<>();

    /**
     * 0.解压war包
     * 1.遍历文件夹，这里简单处理把每个文件夹当成一个项目
     */
    public static void load() throws Exception {
        File[] projects = new File(TomcatServer.WEB_ROOT).listFiles(File::isDirectory);
        for (File project : projects) {
            // 2.读取web.xml文件，解析里面的servlet以及对应的映射
            //  WebXml webXml = new WebXmlConfigUtil().loadXml(project.getPath() + "\\WEB-INF\\web.xml");
            WebXml webXml = new WebXml(project.getPath());
            XmlUtils xml = new XmlUtils(project.getPath() + "\\WEB-INF\\web.xml");
            //将所有的类都存储到容器中
            List<Element> list = xml.getNodes("servlet");
            for (Element element : list) {
                webXml.servlets.put(element.element("servlet-name").getText(),
                        element.element("servlet-class").getText());
            }
            //映射关系创建
            List<Element> list2 = xml.getNodes("servlet-mapping");
            for (Element element : list2) {
                webXml.servletMapping.put(element.element("url-pattern").getText(),
                        element.element("servlet-name").getText());
            }

            // 3.加载Class,创建对象
            webXml.loadServlet();

            resultMap.put(project.getName(), webXml);
        }
    }
}
